+2007-12-28 Mathias Hasselmann <mathias@openismus.com>
+
+ Without setting "detail-width-chars" and "detail-height-rows"
+ properties not only the widget has to be redrawn on certain
+ conditions, but also its size must be recalculated. (#339540)
+
+ * gtk/gtkcalendar.c: Add calendar_queue_refresh and call
+ that function instead of gtk_widget_queue_draw.
+
2007-12-28 Mathias Hasselmann <mathias@openismus.com>
Consider details for size-request and expose-event. (#339540)
* Utility Functions *
****************************************/
+static void
+calendar_queue_refresh (GtkCalendar *calendar)
+{
+ GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
+
+ if (!priv->detail_func ||
+ priv->detail_width_chars ||
+ priv->detail_height_rows)
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ else
+ gtk_widget_queue_resize (GTK_WIDGET (calendar));
+}
+
static void
calendar_set_month_next (GtkCalendar *calendar)
{
else
gtk_calendar_select_day (calendar, calendar->selected_day);
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ calendar_queue_refresh (calendar);
}
static void
else
gtk_calendar_select_day (calendar, calendar->selected_day);
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ calendar_queue_refresh (calendar);
}
static void
else
gtk_calendar_select_day (calendar, calendar->selected_day);
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ calendar_queue_refresh (calendar);
}
static void
gtk_calendar_select_day (calendar, calendar->selected_day);
}
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ calendar_queue_refresh (calendar);
}
\f
GdkEventFocus *event)
{
GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget);
+ GtkCalendar *calendar = GTK_CALENDAR (widget);
- gtk_widget_queue_draw (widget);
-
- calendar_stop_spinning (GTK_CALENDAR (widget));
+ calendar_queue_refresh (calendar);
+ calendar_stop_spinning (calendar);
priv->in_drag = 0;
calendar->year = year;
calendar_compute_days (calendar);
-
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ calendar_queue_refresh (calendar);
g_object_freeze_notify (G_OBJECT (calendar));
g_object_notify (G_OBJECT (calendar), "month");
}
calendar->num_marked_dates = 0;
-
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ calendar_queue_refresh (calendar);
}
/**